package jm.data.structure.set;


/**
 * @Description 集合接口
 * @date 2022/4/23 14:26
 */
public interface Set<E> {

    /**
     * 获取元素个数
     * @return size
     */
    int size();

    /**
     * 判断是否为空
     * @return
     */
    boolean isEmpty();

    /**
     * 清空集合
     */
    void clear();

    /**
     * 判断是否包含某个元素
     * @param e
     * @return
     */
    boolean contains(E e);

    /**
     * 添加元素
     * @param e
     */
    void add(E e);

    /**
     * 删除元素
     * @param e
     */
    void remove(E e);

    /**
     * 遍历接口
     * @param visitor
     */
    void traversal(Visitor<E> visitor);

    /**
     * 遍历接口抽象类
     * @param <E>
     */
    public static abstract class Visitor<E>{
        boolean stoop;
        public abstract boolean visit(E e);
    }

}
